package com.llj.pu;

import com.llj.pu.annotation.ExcelColumn;
import com.llj.pu.model.ExcelBean;
import lombok.Data;
import lombok.EqualsAndHashCode;

import java.math.BigDecimal;
import java.util.List;

/**
 * ClassName: ExportContractSignDetailDTO
 * Description:
 * author: @author l
 * time: 2025/7/4 16:42
 */
@EqualsAndHashCode(callSuper = true)
@Data
public class ExportContractSignDetailDTO extends ExcelBean {
    /**
     * 序号
     */
    @ExcelColumn("序号")
    private Integer rowNum;

    /**
     * 年月
     */
    @ExcelColumn("年月")
    private String yearMonth;

    /**
     * 所属区域
     */
    @ExcelColumn("所属区域")
    private String area;

    /**
     * 客户名称
     */
    @ExcelColumn("客户名称")
    private String customerName;

    /**
     * 合同编号
     */
    @ExcelColumn("合同编号")
    private String contractNumber;

    /**
     * 所属业务员
     */
    @ExcelColumn("所属业务员")
    private String salesmanName;

    /**
     * 所属渠道商
     */
    @ExcelColumn("渠道商")
    private String channelName;

    /**
     * 合同期限
     */
    @ExcelColumn("合同期限")
    private ContractTerm contractTerm;

    /**
     * 废物信息
     */
    @ExcelColumn("废物信息")
    private List<WasteInfo> wasteInfos;

    /**
     * 累计收运量
     */
    @ExcelColumn("累计收运量（吨）")
    private String totalTransport;

    /**
     * 合同标的
     */
    @ExcelColumn("合同标的(元)")
    private BigDecimal contractTarget;

    /**
     * 运输方式
     */
    @ExcelColumn("运输方式")
    private String transportMode;

    /**
     * 累计应收金额
     */
    @ExcelColumn("累计应收金额（元）")
    private BigDecimal totalReceivable;

    /**
     * 结算期限
     */
    @ExcelColumn("结算期限")
    private String settlementTerm;

    /**
     * 存档情况
     */
    @ExcelColumn("存档情况")
    private String archiveStatus;

    /**
     * 备注
     */
    @ExcelColumn("备注")
    private String remark;

    @EqualsAndHashCode(callSuper = true)
    @Data
    public static class ContractTerm extends ExcelBean {

        /**
         * 开始日期
         */
        @ExcelColumn("开始日期")
        private String startDate;

        /**
         * 结束日期
         */
        @ExcelColumn("结束日期")
        private String endDate;

    }

    @EqualsAndHashCode(callSuper = true)
    @Data
    public static class WasteInfo extends ExcelBean {
        /**
         * 废物类别
         */
        @ExcelColumn("废物类别")
        private String wasteType;

        /**
         * 废物名称
         */
        @ExcelColumn("废物名称")
        private String wasteName;

        /**
         * 年交付数量
         */
        @ExcelColumn("年交付数量（吨）")
        private BigDecimal yearDelivery;

        /**
         * 超出部分单价
         */
        @ExcelColumn("超出部分单价（元/吨）")
        private ExcessPrice excessPrice;
    }

    @EqualsAndHashCode(callSuper = true)
    @Data
    public static class ExcessPrice extends ExcelBean {

        /**
         * 处置单价
         */
        @ExcelColumn("处置单价（元/吨）")
        private BigDecimal disposalPrice;

    }
}
